EC-CUBE 2.11.4
[ class tree: EC-CUBE 2.11.4 ] [ index: EC-CUBE 2.11.4 ] [ all elements ]

Source for file SC_CheckError.php

Documentation is available at SC_CheckError.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. /*----------------------------------------------------------------------
  25.  * [名称] SC_CheckError
  26.  * [概要] エラーチェッククラス
  27.  *----------------------------------------------------------------------
  28.  */
  29. class SC_CheckError {
  30.     var $arrErr = array();
  31.     var $arrParam;
  32.  
  33.     // チェック対象の値が含まれる配列をセットする。
  34.     function SC_CheckError($array ""{
  35.         if($array != ""{
  36.             $this->arrParam = $array;
  37.         else {
  38.             $this->arrParam = $_POST;
  39.         }
  40.  
  41.     }
  42.  
  43.     function doFunc($value$arrFunc{
  44.         foreach $arrFunc as $key {
  45.             $this->$key($value);
  46.         }
  47.     }
  48.  
  49.     /**
  50.      * HTMLのタグをチェックする
  51.      *
  52.      * @param array $value value[0] = 項目名 value[1] = 判定対象 value[2] = 許可するタグが格納された配列
  53.      * @return void 
  54.      */
  55.     function HTML_TAG_CHECK($value{
  56.         if(isset($this->arrErr[$value[1]])) {
  57.             return;
  58.         }
  59.         $this->createParam($value);
  60.         // 含まれているタグを抽出する
  61.         preg_match_all("/<([\/]?[a-z]+)/"$this->arrParam[$value[1]]$arrTag);
  62.  
  63.         foreach($arrTag[1as $val{
  64.             $find false;
  65.  
  66.             foreach($value[2as $tag{
  67.                 $tag preg_replace('/^\\//''\/'$tag);
  68.                 if(preg_match("/^" $tag "$/i"$val)) {
  69.                     $find true;
  70.                     break;
  71.                 }
  72.             }
  73.  
  74.             if(!$find{
  75.                 $this->arrErr[$value[1]] "※ " $value[0"に許可されていないタグ[" strtoupper($val"]が含まれています。<br />";
  76.                 return;
  77.             }
  78.         }
  79.     }
  80.  
  81.     /**
  82.      * 必須入力の判定
  83.      *
  84.      * 受け取りがない場合エラーを返す
  85.      * @param array $value value[0] = 項目名 value[1] = 判定対象
  86.      * @return void 
  87.      */
  88.     function EXIST_CHECK$value {
  89.         if (isset($this->arrErr[$value[1]])) {
  90.             return;
  91.         }
  92.         $this->createParam($value);
  93.         if (!is_array($this->arrParam[$value[1]]&& strlen($this->arrParam[$value[1]]== ){
  94.             $this->arrErr[$value[1]] "※ " $value[0"が入力されていません。<br />";
  95.         else if (is_array($this->arrParam[$value[1]]&& count($this->arrParam[$value[1]]== 0{
  96.             $this->arrErr[$value[1]] "※ " $value[0"が選択されていません。<br />";
  97.         }
  98.     }
  99.  
  100.     /**
  101.      * 必須入力の判定(逆順)
  102.      *
  103.      * 受け取りがない場合エラーを返す
  104.      * @param array $value value[0] = 判定対象 value[1] = 項目名
  105.      * @return void 
  106.      */
  107.     function EXIST_CHECK_REVERSE$value {
  108.         if(isset($this->arrErr[$value[0]])) {
  109.             return;
  110.         }
  111.         $this->createParam($value);
  112.         ifstrlen($this->arrParam[$value[0]]== ){
  113.             $this->arrErr[$value[0]] "※ " $value[0"が入力されていません。<br />";
  114.         }
  115.     }
  116.  
  117.     /**
  118.      * スペース、タブの判定
  119.      *
  120.      * 受け取りがない場合エラーを返す
  121.      * @param array $value value[0] = 項目名 value[1] = 判定対象
  122.      * @return void 
  123.      */
  124.     function SPTAB_CHECK$value {
  125.         if(isset($this->arrErr[$value[1]])) {
  126.             return;
  127.         }
  128.         $this->createParam($value);
  129.         if(strlen($this->arrParam[$value[1]]!= && preg_match("/^[  \t\r\n]+$/"$this->arrParam[$value[1]])){
  130.             $this->arrErr[$value[1]] "※ " $value[0"にスペース、タブ、改行のみの入力はできません。<br />";
  131.         }
  132.     }
  133.  
  134.     /**
  135.      * スペース、タブの判定
  136.      *
  137.      * 受け取りがない場合エラーを返す
  138.      * @param array $value value[0] = 項目名 value[1] = 判定対象
  139.      * @return void 
  140.      */
  141.     function NO_SPTAB$value {
  142.         if(isset($this->arrErr[$value[1]])) {
  143.             return;
  144.         }
  145.         $this->createParam($value);
  146.         if(strlen($this->arrParam[$value[1]]!= && preg_match("/[  \t\r\n]+/u"$this->arrParam[$value[1]])){
  147.             $this->arrErr[$value[1]] "※ " $value[0"にスペース、タブ、改行は含めないで下さい。<br />";
  148.         }
  149.     }
  150.  
  151.     /* ゼロで開始されている数値の判定 */
  152.     function ZERO_START($value{
  153.         if(isset($this->arrErr[$value[1]])) {
  154.             return;
  155.         }
  156.         $this->createParam($value);
  157.         if(strlen($this->arrParam[$value[1]]!= && preg_match("/^[0]+[0-9]+$/"$this->arrParam[$value[1]])){
  158.             $this->arrErr[$value[1]] "※ " $value[0"に0で始まる数値が入力されています。<br />";
  159.         }
  160.     }
  161.  
  162.     /**
  163.      * 必須選択の判定
  164.      *
  165.      * プルダウンなどで選択されていない場合エラーを返す
  166.      * @param array $value value[0] = 項目名 value[1] = 判定対象
  167.      * @return void 
  168.      */
  169.     function SELECT_CHECK$value {
  170.         if(isset($this->arrErr[$value[1]])) {
  171.             return;
  172.         }
  173.         $this->createParam($value);
  174.         ifstrlen($this->arrParam[$value[1]]== ){
  175.             $this->arrErr[$value[1]] "※ " $value[0"が選択されていません。<br />";
  176.         }
  177.     }
  178.  
  179.     /**
  180.      * 同一性の判定
  181.      *
  182.      * 入力が指定文字数以上ならエラーを返す
  183.      * @param array $value value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
  184.      * @return void 
  185.      */
  186.     function EQUAL_CHECK$value {
  187.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[3]])) {
  188.             return;
  189.         }
  190.         $this->createParam($value);
  191.         // 文字数の取得
  192.         if$this->arrParam[$value[2]] !== $this->arrParam[$value[3]]{
  193.             $this->arrErr[$value[2]] "※ " $value[0"と" $value[1"が一致しません。<br />";
  194.         }
  195.     }
  196.  
  197.     /**
  198.      * 値が異なることの判定
  199.      *
  200.      * 入力が指定文字数以上ならエラーを返す
  201.      * @param array $value value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
  202.      * @return void 
  203.      */
  204.     function DIFFERENT_CHECK$value {
  205.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[3]])) {
  206.             return;
  207.         }
  208.         $this->createParam($value);
  209.         // 文字数の取得
  210.         if$this->arrParam[$value[2]] == $this->arrParam[$value[3]]{
  211.             $this->arrErr[$value[2]] "※ " $value[0"と" $value[1"は、同じ値を使用できません。<br />";
  212.         }
  213.     }
  214.  
  215.     /**
  216.      * 値の大きさを比較する value[2] < value[3]でなければエラー
  217.      *
  218.      * 入力が指定文字数以上ならエラーを返す
  219.      * @param array $value value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
  220.      * @return void 
  221.      */
  222.     function GREATER_CHECK($value{
  223.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[3]])) {
  224.             return;
  225.         }
  226.         $this->createParam($value);
  227.         // 文字数の取得
  228.         if($this->arrParam[$value[2]] != "" && $this->arrParam[$value[3]] != "" && ($this->arrParam[$value[2]] $this->arrParam[$value[3]])) {
  229.             $this->arrErr[$value[2]] "※ " $value[0"は" $value[1"より大きい値を入力できません。<br />";
  230.         }
  231.     }
  232.  
  233.     /**
  234.      * 最大文字数制限の判定
  235.      *
  236.      * 入力が指定文字数以上ならエラーを返す
  237.      * @param array $value value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最大文字数(半角も全角も1文字として数える)
  238.      * @return void 
  239.      */
  240.     function MAX_LENGTH_CHECK$value {
  241.         if(isset($this->arrErr[$value[1]])) {
  242.             return;
  243.         }
  244.         $this->createParam($value);
  245.         // 文字数の取得
  246.         ifmb_strlen($this->arrParam[$value[1]]$value[2{
  247.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"字以下で入力してください。<br />";
  248.         }
  249.     }
  250.  
  251.     /**
  252.      * 最小文字数制限の判定
  253.      *
  254.      * 入力が指定文字数未満ならエラーを返す
  255.      * @param array $value value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小文字数(半角も全角も1文字として数える)
  256.      * @return void 
  257.      */
  258.     function MIN_LENGTH_CHECK$value {
  259.         if(isset($this->arrErr[$value[1]])) {
  260.             return;
  261.         }
  262.         $this->createParam($value);
  263.         // 文字数の取得
  264.         ifmb_strlen($this->arrParam[$value[1]]$value[2{
  265.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"字以上で入力してください。<br />";
  266.         }
  267.     }
  268.  
  269.     /**
  270.      * 最大文字数制限の判定
  271.      *
  272.      * 入力が最大数以上ならエラーを返す
  273.      * @param array $value value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最大数]
  274.      * @return void 
  275.      */
  276.     function MAX_CHECK$value {
  277.         if(isset($this->arrErr[$value[1]])) {
  278.             return;
  279.         }
  280.         $this->createParam($value);
  281.         // 文字数の取得
  282.         if($this->arrParam[$value[1]] $value[2{
  283.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"以下で入力してください。<br />";
  284.         }
  285.     }
  286.  
  287.     /**
  288.      * 最小数値制限の判定
  289.      *
  290.      * 入力が最小数未満ならエラーを返す
  291.      * @param array $value value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最小数
  292.      * @return void 
  293.      */
  294.     function MIN_CHECK$value {
  295.         if(isset($this->arrErr[$value[1]])) {
  296.             return;
  297.         }
  298.         $this->createParam($value);
  299.         if($this->arrParam[$value[1]] $value[2{
  300.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"以上で入力してください。<br />";
  301.         }
  302.     }
  303.  
  304.     /**
  305.      * 数字の判定
  306.      *
  307.      * 入力文字が数字以外ならエラーを返す
  308.      * @param array $value value[0] = 項目名 value[1] = 判定対象文字列
  309.      * @return void 
  310.      */
  311.     function NUM_CHECK$value {
  312.         if(isset($this->arrErr[$value[1]])) {
  313.             return;
  314.         }
  315.         $this->createParam($value);
  316.         if $this->numelicCheck($this->arrParam[$value[1]]) ) {
  317.             $this->arrErr[$value[1]] "※ " $value[0"は数字で入力してください。<br />";
  318.         }
  319.     }
  320.  
  321.     /**
  322.      * 小数点を含む数字の判定
  323.      *
  324.      * 入力文字が数字以外ならエラーを返す
  325.      * @param array $value value[0] = 項目名 value[1] = 判定対象文字列
  326.      * @return void 
  327.      */
  328.     function NUM_POINT_CHECK$value {
  329.         if(isset($this->arrErr[$value[1]])) {
  330.             return;
  331.         }
  332.         $this->createParam($value);
  333.         if strlen($this->arrParam[$value[1]]&& !is_numeric($this->arrParam[$value[1]])) {
  334.             $this->arrErr[$value[1]] "※ " $value[0"は数字で入力してください。<br />";
  335.         }
  336.     }
  337.  
  338.     function ALPHA_CHECK($value{
  339.         if(isset($this->arrErr[$value[1]])) {
  340.             return;
  341.         }
  342.         $this->createParam($value);
  343.         ifstrlen($this->arrParam[$value[1]]&& !ctype_alpha($this->arrParam[$value[1]])) {
  344.             $this->arrErr[$value[1]] "※ " $value[0"は半角英字で入力してください。<br />";
  345.         }
  346.     }
  347.  
  348.     /**
  349.      * 電話番号の判定
  350.      *
  351.      * 数字チェックと文字数チェックを実施する。
  352.      * @param array $value 各要素は以下の通り。<br>
  353.      *      [0]: 項目名<br>
  354.      *      [1]: 電番1項目目<br>
  355.      *      [2]: 電番2項目目<br>
  356.      *      [3]: 電番3項目目<br>
  357.      *      [4]: 電話番号各項目制限 (指定なしの場合、TEL_ITEM_LEN)<br>
  358.      *      [5]: 電話番号総数 (指定なしの場合、TEL_LEN)
  359.      * @return void 
  360.      */
  361.     function TEL_CHECK($value{
  362.         $telItemLen = isset($value[4]$value[4TEL_ITEM_LEN;
  363.         $telLen = isset($value[5]$value[5TEL_LEN;
  364.  
  365.         if (isset($this->arrErr[$value[1]]|| isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[3]])) {
  366.             return;
  367.         }
  368.         $this->createParam($value);
  369.         $cnt 0;
  370.  
  371.         for($i 1$i <= 3$i++{
  372.             if(strlen($this->arrParam[$value[$i]]0{
  373.                 $cnt++;
  374.             }
  375.         }
  376.  
  377.         // すべての項目が満たされていない場合を判定(一部だけ入力されている状態)
  378.         if($cnt && $cnt 3{
  379.             $this->arrErr[$value[1]] .= "※ " $value[0"はすべての項目を入力してください。<br />";
  380.         }
  381.  
  382.         $total_count 0;
  383.         for($i 1$i <= 3$i++{
  384.             if(strlen($this->arrParam[$value[$i]]&& strlen($this->arrParam[$value[$i]]$telItemLen{
  385.                 $this->arrErr[$value[$i]] .= "※ " $value[0$i "は" $telItemLen "字以内で入力してください。<br />";
  386.             else if ($this->numelicCheck($this->arrParam[$value[1]])) {
  387.                 $this->arrErr[$value[$i]] .= "※ " $value[0$i "は数字で入力してください。<br />";
  388.             }
  389.             $total_count += strlen($this->arrParam[$value[$i]]);
  390.         }
  391.  
  392.         // 合計値チェック
  393.         if ($total_count $telLen{
  394.             $this->arrErr[$value[3]] .= "※ " $value[0"は" $telLen "文字以内で入力してください。<br />";
  395.         }
  396.     }
  397.  
  398.     /* 関連項目が完全に満たされているか判定
  399.         value[0]    : 項目名
  400.         value[1]    : 判定対象要素名
  401.     */
  402.     function FULL_EXIST_CHECK($value{
  403.         $max count($value);
  404.         $this->createParam($value);
  405.         // 既に該当項目にエラーがある場合は、判定しない。
  406.         for($i 1$i $max$i++{
  407.             if(isset($this->arrErr[$value[$i]])) {
  408.                 return;
  409.             }
  410.         }
  411.  
  412.         $blank false;
  413.  
  414.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  415.         for($i 1$i $max$i++{
  416.             if(strlen($this->arrParam[$value[$i]]<= 0{
  417.                 $blank true;
  418.             }
  419.         }
  420.  
  421.         if($blank{
  422.             $this->arrErr[$value[1]] "※ " $value[0"が入力されていません。<br />";
  423.         }
  424.     }
  425.  
  426.     /* 関連項目がすべて満たされているか判定
  427.         value[0]    : 項目名
  428.         value[1]    : 判定対象要素名
  429.     */
  430.     function ALL_EXIST_CHECK($value{
  431.         $max count($value);
  432.  
  433.         // 既に該当項目にエラーがある場合は、判定しない。
  434.         for($i 1$i $max$i++{
  435.             if(isset($this->arrErr[$value[$i]])) {
  436.                 return;
  437.             }
  438.         }
  439.  
  440.         $blank false;
  441.         $input false;
  442.  
  443.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  444.         for($i 1$i $max$i++{
  445.             if(strlen($this->arrParam[$value[$i]]<= 0{
  446.                 $blank true;
  447.             else {
  448.                 $input true;
  449.             }
  450.         }
  451.  
  452.         if($blank && $input{
  453.             $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  454.         }
  455.     }
  456.  
  457.     /* 関連項目がどれか一つ満たされているか判定
  458.         value[0]    : 項目名
  459.         value[1]    : 判定対象要素名
  460.     */
  461.     function ONE_EXIST_CHECK($value{
  462.         $max count($value);
  463.         $this->createParam($value);
  464.         // 既に該当項目にエラーがある場合は、判定しない。
  465.         for($i 1$i $max$i++{
  466.             if(isset($this->arrErr[$value[$i]])) {
  467.                 return;
  468.             }
  469.         }
  470.  
  471.         $input false;
  472.  
  473.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  474.         for($i 1$i $max$i++{
  475.             if(strlen($this->arrParam[$value[$i]]0{
  476.                 $input true;
  477.             }
  478.         }
  479.  
  480.         if(!$input{
  481.             $this->arrErr[$value[1]] "※ " $value[0"が入力されていません。<br />";
  482.         }
  483.     }
  484.  
  485.     /* 上位の項目が満たされているか判定
  486.         value[0]    : 項目名
  487.         value[1]    : 判定対象要素名
  488.     */
  489.     function TOP_EXIST_CHECK($value{
  490.         $max count($value);
  491.         $this->createParam($value);
  492.  
  493.         // 既に該当項目にエラーがある場合は、判定しない。
  494.         for($i 1$i $max$i++{
  495.             if(isset($this->arrErr[$value[$i]])) {
  496.                 return;
  497.             }
  498.         }
  499.  
  500.         $blank false;
  501.         $error false;
  502.  
  503.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  504.         for($i 1$i $max$i++{
  505.             if(strlen($this->arrParam[$value[$i]]<= 0{
  506.                 $blank true;
  507.             else {
  508.                 if($blank{
  509.                     $error true;
  510.                 }
  511.             }
  512.         }
  513.  
  514.         if($error{
  515.             $this->arrErr[$value[1]] "※ " $value[0"は先頭の項目から順番に入力して下さい。<br />";
  516.         }
  517.     }
  518.  
  519.     /* カタカナの判定 */
  520.     // 入力文字がカナ以外ならエラーを返す
  521.     // value[0] = 項目名 value[1] = 判定対象文字列
  522.     function KANA_CHECK$value {
  523.         if(isset($this->arrErr[$value[1]])) {
  524.             return;
  525.         }
  526.         $this->createParam($value);
  527.         if(strlen($this->arrParam[$value[1]]&& !preg_match("/^[ァ-ヶヲ-゚ー]+$/u"$this->arrParam[$value[1]])) {
  528.             $this->arrErr[$value[1]] "※ " $value[0"はカタカナで入力してください。<br />";
  529.         }
  530.     }
  531.  
  532.     /* カタカナの判定2 (タブ、スペースは許可する) */
  533.     // 入力文字がカナ以外ならエラーを返す
  534.     // value[0] = 項目名 value[1] = 判定対象文字列
  535.     function KANABLANK_CHECK$value {
  536.         if(isset($this->arrErr[$value[1]])) {
  537.             return;
  538.         }
  539.         $this->createParam($value);
  540.         if(strlen($this->arrParam[$value[1]]&& !preg_match("/^([  \t\r\n]|[ァ-ヶ]|[ー])+$/u"$this->arrParam[$value[1]])) {
  541.             $this->arrErr[$value[1]] "※ " $value[0"はカタカナで入力してください。<br />";
  542.         }
  543.     }
  544.  
  545.     /* 英数字の判定 */
  546.     // 入力文字が英数字以外ならエラーを返す
  547.     // value[0] = 項目名 value[1] = 判定対象文字列
  548.     function ALNUM_CHECK$value {
  549.         if(isset($this->arrErr[$value[1]])) {
  550.             return;
  551.         }
  552.         $this->createParam($value);
  553.         ifstrlen($this->arrParam[$value[1]]&& !ctype_alnum($this->arrParam[$value[1]]) ) {
  554.             $this->arrErr[$value[1]] "※ " $value[0"は英数字で入力してください。<br />";
  555.         }
  556.     }
  557.  
  558.     /* 英数記号の判定 */
  559.     // 入力文字が英数記号以外ならエラーを返す
  560.     // value[0] = 項目名 value[1] = 判定対象文字列
  561.     function GRAPH_CHECK$value {
  562.         if(isset($this->arrErr[$value[1]])) {
  563.             return;
  564.         }
  565.         $this->createParam($value);
  566.         ifstrlen($this->arrParam[$value[1]]&& !preg_match("/^[[:graph:]|[:space:]]+$/i"$this->arrParam[$value[1]] ) ) {
  567.             $this->arrErr[$value[1]] "※ " $value[0"は英数記号で入力してください。<br />";
  568.         }
  569.     }
  570.  
  571.     /* 必須選択の判定 */
  572.     // 入力値で0が許されない場合エラーを返す
  573.     // value[0] = 項目名 value[1] = 判定対象
  574.     function ZERO_CHECK$value {
  575.         $this->createParam($value);
  576.         if($this->arrParam[$value[1]] == "0" ){
  577.             $this->arrErr[$value[1]] "※ " $value[0"は1以上を入力してください。<br />";
  578.         }
  579.     }
  580.  
  581.     /* 桁数の判定 (最小最大)*/
  582.     // 入力文字の桁数判定 → 最小桁数<入力文字列<最大桁数
  583.     // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小桁数 value[3] = 最大桁数
  584.     function NUM_RANGE_CHECK$value {
  585.         if(isset($this->arrErr[$value[1]])) {
  586.             return;
  587.         }
  588.         $this->createParam($value);
  589.         // $this->arrParam[$value[0]] = mb_convert_kana($this->arrParam[$value[0]], 'n');
  590.         $count strlen($this->arrParam[$value[1]]);
  591.         if( ( $count && $value[2$count || $value[3$count {
  592.             $this->arrErr[$value[1]] =  "※ $value[0]$value[2]桁~$value[3]桁で入力して下さい。<br />";
  593.         }
  594.     }
  595.  
  596.     /* 桁数の判定 */
  597.     // 入力文字の桁数判定 → 入力文字列 = 桁数 以外はNGの場合
  598.     // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 桁数
  599.     function NUM_COUNT_CHECK$value {
  600.         if(isset($this->arrErr[$value[1]])) {
  601.             return;
  602.         }
  603.         $this->createParam($value);
  604.         $count strlen($this->arrParam[$value[1]]);
  605.         if(($count 0&& $count != $value[2{
  606.             $this->arrErr[$value[1]] =  "※ $value[0]$value[2]桁で入力して下さい。<br />";
  607.         }
  608.     }
  609.  
  610.     /**
  611.      * メールアドレス形式の判定
  612.      *
  613.      * @param array $value 各要素は以下の通り。<br>
  614.      *      [0]: 項目名<br>
  615.      *      [1]: 判定対象を格納している配列キー
  616.      * @return void 
  617.      */
  618.     function EMAIL_CHECK$value ){
  619.         if(isset($this->arrErr[$value[1]])) {
  620.             return;
  621.         }
  622.  
  623.         $this->createParam($value);
  624.  
  625.         // 入力がない場合処理しない
  626.         if (strlen($this->arrParam[$value[1]]=== 0{
  627.             return;
  628.         }
  629.  
  630.         $wsp           '[\x20\x09]';
  631.         $vchar         '[\x21-\x7e]';
  632.         $quoted_pair   "\\\\(?:$vchar|$wsp)";
  633.         $qtext         '[\x21\x23-\x5b\x5d-\x7e]';
  634.         $qcontent      "(?:$qtext|$quoted_pair)";
  635.         $quoted_string "\"$qcontent*\"";
  636.         $atext         '[a-zA-Z0-9!#$%&\'*+\-\/\=?^_`{|}~]';
  637.         $dot_atom_text "$atext+(?:[.]$atext+)*";
  638.         $dot_atom      $dot_atom_text;
  639.         $local_part    "(?:$dot_atom|$quoted_string)";
  640.         $domain        $dot_atom;
  641.         $addr_spec     "${local_part}[@]$domain";
  642.  
  643.         $dot_atom_loose   "$atext+(?:[.]|$atext)*";
  644.         $local_part_loose "(?:$dot_atom_loose|$quoted_string)";
  645.         $addr_spec_loose  "${local_part_loose}[@]$domain";
  646.  
  647.         if (RFC_COMPLIANT_EMAIL_CHECK{
  648.             $regexp "/\A${addr_spec}\z/";
  649.         else {
  650.             // 携帯メールアドレス用に、..や.@を許容する。
  651.             $regexp "/\A${addr_spec_loose}\z/";
  652.         }
  653.  
  654.         if (!preg_match($regexp$this->arrParam[$value[1]])) {
  655.             $this->arrErr[$value[1]] "※ " $value[0"の形式が不正です。<br />";
  656.             return;
  657.         }
  658.  
  659.         // 最大文字数制限の判定 (#871)
  660.         $arrValueTemp $value;
  661.         $arrValueTemp[2256;
  662.         $this->MAX_LENGTH_CHECK($arrValueTemp);
  663.     }
  664.  
  665.     /* メールアドレスに使用できる文字の判定 */
  666.     // メールアドレスに使用する文字を正規表現で判定する
  667.     //  value[0] = 項目名 value[1] = 判定対象メールアドレス
  668.     function EMAIL_CHAR_CHECK$value ){
  669.         if(isset($this->arrErr[$value[1]])) {
  670.             return;
  671.         }
  672.         $this->createParam($value);
  673.         if(strlen($this->arrParam[$value[1]]&& !preg_match("/^[a-zA-Z0-9_\.@\+\?-]+$/i",$this->arrParam[$value[1]]) ) {
  674.             $this->arrErr[$value[1]] "※ " $value[0"に使用する文字を正しく入力してください。<br />";
  675.         }
  676.     }
  677.  
  678.     /* URL形式の判定 */
  679.     // URLを正規表現で判定する。デフォルトでhttp://があってもOK
  680.     //  value[0] = 項目名 value[1] = 判定対象URL
  681.     function URL_CHECK$value ){
  682.          if(isset($this->arrErr[$value[1]])) {
  683.             return;
  684.         }
  685.          ifstrlen($this->arrParam[$value[1]]&& !preg_match("@^https?://+($|[a-zA-Z0-9_~=:&\?\.\/-])+$@i"$this->arrParam[$value[1]] ) ) {
  686.             $this->arrErr[$value[1]] "※ " $value[0"を正しく入力してください。<br />";
  687.         }
  688.     }
  689.  
  690.     /* IPアドレスの判定 */
  691.     //  value[0] = 項目名 value[1] = 判定対象IPアドレス文字列
  692.     function IP_CHECK$value ){
  693.         if(isset($this->arrErr[$value[1]])) {
  694.             return;
  695.         }
  696.         //改行コードが含まれている場合には配列に変換
  697.         $params str_replace("\r","",$this->arrParam[$value[1]]);
  698.         if(!empty($params)){
  699.             if(strpos($params,"\n"=== false){
  700.                 $params .= "\n";
  701.             }
  702.             $params explode("\n",$params);
  703.             foreach($params as $param){
  704.                 $param trim($param);
  705.                 if(long2ip(ip2long($param)) != trim($param&& !empty($param)) {
  706.                     $this->arrErr[$value[1]] "※ " $value[0"に正しい形式のIPアドレスを入力してください。<br />";
  707.                 }
  708.             }
  709.         }
  710.     }
  711.  
  712.     /* 拡張子の判定 */
  713.     // 受け取りがない場合エラーを返す
  714.     // value[0] = 項目名 value[1] = 判定対象 value[2]=array(拡張子)
  715.     function FILE_EXT_CHECK$value {
  716.         if(isset($this->arrErr[$value[1]]|| count($value[2]== 0{
  717.             return;
  718.         }
  719.         $this->createParam($value);
  720.  
  721.         if($_FILES[$value[1]]['name'!= "" {
  722.             $errFlag 1;
  723.             $array_ext explode("."$_FILES[$value[1]]['name']);
  724.  
  725.             $strExt "";
  726.  
  727.             foreach $value[2as $checkExt ){
  728.                 $ext "";
  729.  
  730.                 // チェック拡張子のピリオドの数を取得('tar.gz'の場合1個、'jpg'のように通常は0個)
  731.                 $count_period substr_count($checkExt".");
  732.  
  733.                 if($count_period 0{
  734.                     for($i max(array_keys($array_ext)) $count_period$i count($array_ext)$i++{
  735.                         $ext .= $array_ext[$i".";
  736.                     }
  737.                     $ext preg_replace("/.$/""" ,$ext);
  738.                 else {
  739.                     $ext $array_extcount $array_ext ];
  740.                 }
  741.  
  742.                 $ext strtolower($ext);
  743.  
  744.                 if $ext == $checkExt{
  745.                     $errFlag 0;
  746.                 }
  747.  
  748.                 if($strExt == ""{
  749.                     $strExt.= $checkExt;
  750.                 else {
  751.                     $strExt.= "$checkExt";
  752.                 }
  753.             }
  754.         }
  755.         if ($errFlag == 1{
  756.             $this->arrErr[$value[1]] "※ " $value[0"で許可されている形式は、" $strExt "です。<br />";
  757.         }
  758.     }
  759.  
  760.     /* ファイルが存在するかチェックする */
  761.     // 受け取りがない場合エラーを返す
  762.     // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定ディレクトリ
  763.     function FIND_FILE$value {
  764.         if(isset($this->arrErr[$value[1]])) {
  765.             return;
  766.         }
  767.  
  768.         $this->createParam($value);
  769.         if($value[2!= ""{
  770.             $dir $value[2];
  771.         else {
  772.             $dir IMAGE_SAVE_REALDIR;
  773.         }
  774.  
  775.         $path $dir "/" $this->arrParam[$value[1]];
  776.         $path str_replace("//""/"$path);
  777.  
  778.         if($this->arrParam[$value[1]] != "" && !file_exists($path)){
  779.             $this->arrErr[$value[1]] "※ " $path "が見つかりません。<br />";
  780.         }
  781.     }
  782.  
  783.     /* ファイルが上げられたか確認 */
  784.     // 受け取りがない場合エラーを返す
  785.     // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB)
  786.     function FILE_EXIST_CHECK$value {
  787.         if(isset($this->arrErr[$value[1]])) {
  788.             return;
  789.         }
  790.         $this->createParam($value);
  791.         if(!($_FILES[$value[1]]['size'!= "" && $_FILES[$value[1]]['size'0)){
  792.             $this->arrErr[$value[1]] "※ " $value[0"をアップロードして下さい。<br />";
  793.         }
  794.     }
  795.  
  796.     /* ファイルサイズの判定 */
  797.     // 受け取りがない場合エラーを返す
  798.     // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB)
  799.     function FILE_SIZE_CHECK$value {
  800.         if(isset($this->arrErr[$value[1]])) {
  801.             return;
  802.         }
  803.         $this->createParam($value);
  804.         if$_FILES[$value[1]]['size'$value[2*  1024 ){
  805.             $byte 'KB';
  806.             if$value[2>= 1000 {
  807.                 $value[2$value[21000;
  808.                 $byte 'MB';
  809.             }
  810.             $this->arrErr[$value[1]] "※ " $value[0"のファイルサイズは" $value[2$byte "以下のものを使用してください。<br />";
  811.         }
  812.     }
  813.  
  814.     /* ファイル名の判定 */
  815.     // 入力文字が英数字,"_","-"以外ならエラーを返す
  816.     // value[0] = 項目名 value[1] = 判定対象文字列
  817.     function FILE_NAME_CHECK$value {
  818.         if(isset($this->arrErr[$value[1]])) {
  819.             return;
  820.         }
  821.         $this->createParam($value);
  822.         ifstrlen($_FILES[$value[1]]['name']&& !preg_match("/^[[:alnum:]_\.-]+$/i"$_FILES[$value[1]]['name']) ) {
  823.             $this->arrErr[$value[1]] "※ " $value[0"のファイル名に日本語やスペースは使用しないで下さい。<br />";
  824.         }
  825.     }
  826.  
  827.     /* ファイル名の判定(アップロード以外の時) */
  828.     // 入力文字が英数字,"_","-"以外ならエラーを返す
  829.     // value[0] = 項目名 value[1] = 判定対象文字列
  830.     function FILE_NAME_CHECK_BY_NOUPLOAD$value {
  831.         if(isset($this->arrErr[$value[1]])) {
  832.             return;
  833.         }
  834.         $this->createParam($value);
  835.         ifstrlen($this->arrParam[$value[1]]&& !preg_match("/^[[:alnum:]_\.-]+$/i"$this->arrParam[$value[1]]|| preg_match("/[\\]/" ,$this->arrParam[$value[1]])) {
  836.             $this->arrErr[$value[1]] "※ " $value[0"のファイル名に日本語やスペースは使用しないで下さい。<br />";
  837.         }
  838.     }
  839.  
  840.     //日付チェック
  841.     // value[0] = 項目名
  842.     // value[1] = YYYY
  843.     // value[2] = MM
  844.     // value[3] = DD
  845.     function CHECK_DATE($value{
  846.         if(isset($this->arrErr[$value[1]])) {
  847.             return;
  848.         }
  849.         $this->createParam($value);
  850.         // 少なくともどれか一つが入力されている。
  851.         if($this->arrParam[$value[1]] || $this->arrParam[$value[2]] || $this->arrParam[$value[3]] 0{
  852.             // 年月日のどれかが入力されていない。
  853.             if(!(strlen($this->arrParam[$value[1]]&& strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]0)) {
  854.                 $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  855.             else if checkdate($this->arrParam[$value[2]]$this->arrParam[$value[3]]$this->arrParam[$value[1]])) {
  856.                 $this->arrErr[$value[1]] "※ " $value[0"が正しくありません。<br />";
  857.             }
  858.         }
  859.     }
  860.  
  861.     //日付チェック
  862.     // value[0] = 項目名
  863.     // value[1] = YYYY
  864.     // value[2] = MM
  865.     // value[3] = DD
  866.     // value[4] = HH
  867.     // value[5] = mm
  868.     function CHECK_DATE2($value{
  869.         if(isset($this->arrErr[$value[1]])) {
  870.             return;
  871.         }
  872.         $this->createParam($value);
  873.         // 少なくともどれか一つが入力されている。
  874.         if($this->arrParam[$value[1]] || $this->arrParam[$value[2]] || $this->arrParam[$value[3]] || $this->arrParam[$value[4]] >= || $this->arrParam[$value[5]] >= 0{
  875.             // 年月日時のどれかが入力されていない。
  876.             if(!(strlen($this->arrParam[$value[1]]&& strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& strlen($this->arrParam[$value[4]]&& strlen($this->arrParam[$value[5]])) {
  877.                 $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  878.             else if checkdate($this->arrParam[$value[2]]$this->arrParam[$value[3]]$this->arrParam[$value[1]])) {
  879.                 $this->arrErr[$value[1]] "※ " $value[0"が正しくありません。<br />";
  880.             }
  881.         }
  882.     }
  883.  
  884.     //日付チェック
  885.     // value[0] = 項目名
  886.     // value[1] = YYYY
  887.     // value[2] = MM
  888.     function CHECK_DATE3($value{
  889.         if(isset($this->arrErr[$value[1]])) {
  890.             return;
  891.         }
  892.         $this->createParam($value);
  893.         // 少なくともどれか一つが入力されている。
  894.         if($this->arrParam[$value[1]] || $this->arrParam[$value[2]] 0{
  895.             // 年月日時のどれかが入力されていない。
  896.             if(!(strlen($this->arrParam[$value[1]]&& strlen($this->arrParam[$value[2]]0)) {
  897.                 $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  898.             else if checkdate($this->arrParam[$value[2]]1$this->arrParam[$value[1]])) {
  899.                 $this->arrErr[$value[1]] "※ " $value[0"が正しくありません。<br />";
  900.             }
  901.         }
  902.     }
  903.  
  904.     //誕生日チェック
  905.     // value[0] = 項目名
  906.     // value[1] = YYYY
  907.     // value[2] = MM
  908.     // value[3] = DD
  909.     function CHECK_BIRTHDAY($value{
  910.         if (isset($this->arrErr[$value[1]])) {
  911.             return;
  912.         }
  913.  
  914.         $this->createParam($value);
  915.         // 年が入力されている。
  916.         if ($this->arrParam[$value[1]] 0{
  917.  
  918.             // 年の数字チェック、最小数値制限チェック
  919.             $this->doFunc(array($value[0].'(年)'$value[1]BIRTH_YEAR)array("NUM_CHECK""MIN_CHECK"));
  920.             // 上のチェックでエラーある場合、中断する。
  921.             if (isset($this->arrErr[$value[1]])) {
  922.                 return;
  923.             }
  924.  
  925.             // 年の最大数値制限チェック
  926.             $this->doFunc(array($value[0].'(年)'$value[1]date('Y',strtotime('now')))array("MAX_CHECK"));
  927.             // 上のチェックでエラーある場合、中断する。
  928.             if (isset($this->arrErr[$value[1]])) {
  929.                 return;
  930.             }
  931.         }
  932.  
  933.         // XXX createParam() が二重に呼ばれる問題を抱える
  934.         $this->CHECK_DATE($value);
  935.     }
  936.  
  937.     /*-----------------------------------------------------------------*/
  938.     /*  CHECK_SET_TERM
  939.     /*  年月日に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
  940.     /*  引数 (開始年,開始月,開始日,終了年,終了月,終了日)
  941.     /*  戻値 array(1,2,3)
  942.     /*          1.開始年月日 (YYYYMMDD 000000)
  943.     /*          2.終了年月日 (YYYYMMDD 235959)
  944.     /*          3.エラー ( 0 = OK, 1 = NG )
  945.     /*-----------------------------------------------------------------*/
  946.     // value[0] = 項目名1
  947.     // value[1] = 項目名2
  948.     // value[2] = start_year
  949.     // value[3] = start_month
  950.     // value[4] = start_day
  951.     // value[5] = end_year
  952.     // value[6] = end_month
  953.     // value[7] = end_day
  954.     function CHECK_SET_TERM ($value{
  955.  
  956.         // 期間指定
  957.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[5]])) {
  958.             return;
  959.         }
  960.         $this->createParam($value);
  961.         $error 0;
  962.         if ( (strlen($this->arrParam[$value[2]]|| strlen($this->arrParam[$value[3]]|| strlen($this->arrParam[$value[4]] 0&& checkdate($this->arrParam[$value[3]]$this->arrParam[$value[4]]$this->arrParam[$value[2]]) ) {
  963.             $this->arrErr[$value[2]] "※ " $value[0"を正しく指定してください。<br />";
  964.         }
  965.         if ( (strlen($this->arrParam[$value[5]]|| strlen($this->arrParam[$value[6]]|| strlen($this->arrParam[$value[7]] 0&& checkdate($this->arrParam[$value[6]]$this->arrParam[$value[7]]$this->arrParam[$value[5]]) ) {
  966.             $this->arrErr[$value[5]] "※ " $value[1"を正しく指定してください。<br />";
  967.         }
  968.         if ( (strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& strlen($this->arrParam[$value[4]] 0&&  (strlen($this->arrParam[$value[5]]|| strlen($this->arrParam[$value[6]]|| strlen($this->arrParam[$value[7]] 0) ){
  969.  
  970.             $date1 $this->arrParam[$value[2]] .sprintf("%02d"$this->arrParam[$value[3]].sprintf("%02d",$this->arrParam[$value[4]]."000000";
  971.             $date2 $this->arrParam[$value[5]] .sprintf("%02d"$this->arrParam[$value[6]].sprintf("%02d",$this->arrParam[$value[7]]."235959";
  972.  
  973.             if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == ""&& $date1 $date2{
  974.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  975.             }
  976.         }
  977.     }
  978.  
  979.     /*-----------------------------------------------------------------*/
  980.     /*  CHECK_SET_TERM2
  981.     /*  年月日時に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
  982.     /*  引数 (開始年,開始月,開始日,開始時間,開始分,開始秒,
  983.     /*        終了年,終了月,終了日,終了時間,終了分,終了秒)
  984.     /*  戻値 array(1,2,3)
  985.     /*          1.開始年月日 (YYYYMMDDHHmmss)
  986.     /*          2.終了年月日 (YYYYMMDDHHmmss)
  987.     /*          3.エラー ( 0 = OK, 1 = NG )
  988.     /*-----------------------------------------------------------------*/
  989.     // value[0] = 項目名1
  990.     // value[1] = 項目名2
  991.     // value[2] = start_year
  992.     // value[3] = start_month
  993.     // value[4] = start_day
  994.     // value[5] = start_hour
  995.     // value[6] = start_minute
  996.     // value[7] = start_second
  997.     // value[8] = end_year
  998.     // value[9] = end_month
  999.     // value[10] = end_day
  1000.     // value[11] = end_hour
  1001.     // value[12] = end_minute
  1002.     // value[13] = end_second
  1003.  
  1004.     /*-----------------------------------------------------------------*/
  1005.     function CHECK_SET_TERM2 ($value{
  1006.  
  1007.         // 期間指定
  1008.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[8]])) {
  1009.             return;
  1010.         }
  1011.         $this->createParam($value);
  1012.         $error 0;
  1013.         if ( (strlen($this->arrParam[$value[2]]|| strlen($this->arrParam[$value[3]]|| strlen($this->arrParam[$value[4]] || strlen($this->arrParam[$value[5]]0&& checkdate($this->arrParam[$value[3]]$this->arrParam[$value[4]]$this->arrParam[$value[2]]) ) {
  1014.             $this->arrErr[$value[2]] "※ " $value[0"を正しく指定してください。<br />";
  1015.         }
  1016.         if ( (strlen($this->arrParam[$value[8]]|| strlen($this->arrParam[$value[9]]|| strlen($this->arrParam[$value[10]] || strlen($this->arrParam[$value[11]] 0&& checkdate($this->arrParam[$value[9]]$this->arrParam[$value[10]]$this->arrParam[$value[8]]) ) {
  1017.             $this->arrErr[$value[8]] "※ " $value[1"を正しく指定してください。<br />";
  1018.         }
  1019.         if ( (strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& strlen($this->arrParam[$value[4]] && strlen($this->arrParam[$value[5]] 0&&  (strlen($this->arrParam[$value[8]]|| strlen($this->arrParam[$value[9]]|| strlen($this->arrParam[$value[10]] || strlen($this->arrParam[$value[11]] 0) ){
  1020.  
  1021.             $date1 $this->arrParam[$value[2]] .sprintf("%02d"$this->arrParam[$value[3]].sprintf("%02d",$this->arrParam[$value[4]].sprintf("%02d",$this->arrParam[$value[5]]).sprintf("%02d",$this->arrParam[$value[6]]).sprintf("%02d",$this->arrParam[$value[7]]);
  1022.             $date2 $this->arrParam[$value[8]] .sprintf("%02d"$this->arrParam[$value[9]].sprintf("%02d",$this->arrParam[$value[10]].sprintf("%02d",$this->arrParam[$value[11]]).sprintf("%02d",$this->arrParam[$value[12]]).sprintf("%02d",$this->arrParam[$value[13]]);
  1023.  
  1024.             if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[8]] == ""&& $date1 $date2{
  1025.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  1026.             }
  1027.             if($date1 == $date2{
  1028.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  1029.             }
  1030.  
  1031.         }
  1032.     }
  1033.  
  1034.     /*-----------------------------------------------------------------*/
  1035.     /*  CHECK_SET_TERM3
  1036.     /*  年月に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
  1037.     /* 引数 (開始年,開始月,終了年,終了月)
  1038.     /* 戻値 array(1,2,3)
  1039.     /*          1.開始年月日 (YYYYMMDD 000000)
  1040.     /*          2.終了年月日 (YYYYMMDD 235959)
  1041.     /*          3.エラー ( 0 = OK, 1 = NG )
  1042.     /*-----------------------------------------------------------------*/
  1043.     // value[0] = 項目名1
  1044.     // value[1] = 項目名2
  1045.     // value[2] = start_year
  1046.     // value[3] = start_month
  1047.     // value[4] = end_year
  1048.     // value[5] = end_month
  1049.     function CHECK_SET_TERM3 ($value{
  1050.  
  1051.         // 期間指定
  1052.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[4]])) {
  1053.             return;
  1054.         }
  1055.         $this->createParam($value);
  1056.         $error 0;
  1057.         if ( (strlen($this->arrParam[$value[2]]|| strlen($this->arrParam[$value[3]]0&& checkdate($this->arrParam[$value[3]]1$this->arrParam[$value[2]]) ) {
  1058.             $this->arrErr[$value[2]] "※ " $value[0"を正しく指定してください。<br />";
  1059.         }
  1060.         if ( (strlen($this->arrParam[$value[4]]|| strlen($this->arrParam[$value[5]]0&& checkdate($this->arrParam[$value[5]]1$this->arrParam[$value[4]]) ) {
  1061.             $this->arrErr[$value[4]] "※ " $value[1"を正しく指定してください。<br />";
  1062.         }
  1063.         if ( (strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& (strlen($this->arrParam[$value[4]]|| strlen($this->arrParam[$value[5]]))) {
  1064.  
  1065.             $date1 $this->arrParam[$value[2]] .sprintf("%02d"$this->arrParam[$value[3]]);
  1066.             $date2 $this->arrParam[$value[4]] .sprintf("%02d"$this->arrParam[$value[5]]);
  1067.  
  1068.             if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == ""&& $date1 $date2{
  1069.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  1070.             }
  1071.         }
  1072.     }
  1073.  
  1074.     //ディレクトリ存在チェック
  1075.     function DIR_CHECK ($value{
  1076.         if(isset($this->arrErr[$value[1]])) {
  1077.             return;
  1078.         }
  1079.         $this->createParam($value);
  1080.         if(!is_dir($this->arrParam[$value[1]])) {
  1081.             $this->arrErr[$value[1]] "※ 指定した" $value[0"は存在しません。<br />";
  1082.         }
  1083.     }
  1084.  
  1085.     // ドメインチェック
  1086.     function DOMAIN_CHECK ($value{
  1087.         if(isset($this->arrErr[$value[1]])) {
  1088.             return;
  1089.         }
  1090.         if(strlen($this->arrParam[$value[1]]&& !preg_match("/^\.[^.]+\..+/i"$this->arrParam[$value[1]])) {
  1091.             $this->arrErr[$value[1]] "※ " $value[0"の形式が不正です。<br />";
  1092.         }
  1093.     }
  1094.  
  1095.     /* 携帯メールアドレスの判定 */
  1096.     // メールアドレスを正規表現で判定する
  1097.     // value[0] = 項目名 value[1] = 判定対象メールアドレス
  1098.     function MOBILE_EMAIL_CHECK$value ){
  1099.         if(isset($this->arrErr[$value[1]])) {
  1100.             return;
  1101.         }
  1102.         $this->createParam($value);
  1103.         $objMobile new SC_Helper_Mobile_Ex();
  1104.         if(strlen($this->arrParam[$value[1]]&& !$objMobile->gfIsMobileMailAddress($this->arrParam[$value[1]])) {
  1105.             $this->arrErr[$value[1]] "※ " $value[0"は携帯電話のものではありません。<br />";
  1106.         }
  1107.     }
  1108.  
  1109.     /**
  1110.      * CHECK_REGIST_CUSTOMER_EMAIL
  1111.      *
  1112.      * メールアドレスが会員登録されているか調べる
  1113.      * @param array $value value[0] = 項目名 value[1] = 判定対象メールアドレス
  1114.      * @access public
  1115.      * @return void 
  1116.      */
  1117.     function CHECK_REGIST_CUSTOMER_EMAIL ($value{
  1118.         if(isset($this->arrErr[$value[1]])) {
  1119.             return;
  1120.         }
  1121.         $this->createParam($value);
  1122.  
  1123.         $register_user_flg =  SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($this->arrParam[$value[1]]);
  1124.         switch($register_user_flg{
  1125.             case 1:
  1126.                 $this->arrErr[$value[1]] .= "※ すでに会員登録で使用されている" $value[0"です。<br />";
  1127.                 break;
  1128.             case 2:
  1129.                 $this->arrErr[$value[1]] .= "※ 退会から一定期間の間は、同じ" $value[0"を使用することはできません。<br />";
  1130.                 break;
  1131.             default:
  1132.                 break;
  1133.         }
  1134.     }
  1135.  
  1136.     /**
  1137.      * 禁止文字列のチェック
  1138.      * value[0] = 項目名 value[1] = 判定対象文字列
  1139.      * value[2] = 入力を禁止する文字列(配列)
  1140.      *
  1141.      * @example $objErr->doFunc(array('URL', 'contents', $arrReviewDenyURL), array("PROHIBITED_STR_CHECK"));
  1142.      */
  1143.     function PROHIBITED_STR_CHECK$value {
  1144.         ifisset($this->arrErr[$value[1]]|| empty($this->arrParam[$value[1]]) ) {
  1145.             return;
  1146.         }
  1147.         $this->createParam($value);
  1148.         $targetStr     $this->arrParam[$value[1]];
  1149.         $prohibitedStr str_replace(array('|''/')array('\|''\/')$value[2]);
  1150.  
  1151.         $pattern '/' join('|'$prohibitedStr'/i';
  1152.         if(preg_match_all($pattern$this->arrParam[$value[1]]$matches)) {
  1153.             $this->arrErr[$value[1]] "※ " $value[0"は入力できません。<br />";
  1154.         }
  1155.     }
  1156.  
  1157.     /**
  1158.      * PHPコードとして評価可能かチェックする.
  1159.      *
  1160.      * @access private
  1161.      * @param array $value [0] => 項目名, [1] => 評価する文字列
  1162.      * @return void 
  1163.      */
  1164.     function EVAL_CHECK($value{
  1165.         if (isset($this->arrErr[$value[0]])) {
  1166.             return;
  1167.         }
  1168.         $this->createParam($value);
  1169.         if ($this->evalCheck($value[1]=== false{
  1170.             $this->arrErr[$value[0]] "※ " $value[0" の形式が不正です。<br />";
  1171.         }
  1172.     }
  1173.  
  1174.     /**
  1175.      * $value が PHPコードとして評価可能かチェックする.
  1176.      *
  1177.      * @access private
  1178.      * @param mixed PHPコードとして評価する文字列
  1179.      * @return mixed PHPコードとして評価できない場合 false,
  1180.      *                評価可能な場合は評価した値
  1181.      */
  1182.     function evalCheck($value{
  1183.         // falseは、正当な式と評価する。
  1184.         if($value === 'false'{
  1185.             return true;
  1186.         }
  1187.         return @eval("return " $value ";");
  1188.     }
  1189.  
  1190.     /**
  1191.      * 未定義の $this->arrParam に空要素を代入する.
  1192.      *
  1193.      * @access private
  1194.      * @param array $value 配列
  1195.      * @return void 
  1196.      */
  1197.     function createParam($value{
  1198.         foreach ($value as $key{
  1199.             if (is_string($key|| is_int($key)) {
  1200.                 if (!isset($this->arrParam[$key]))  $this->arrParam[$key"";
  1201.             }
  1202.         }
  1203.     }
  1204.  
  1205.     /**
  1206.      * 値が数字だけかどうかチェックする
  1207.      *
  1208.      * @access private
  1209.      * @param string $string チェックする文字列
  1210.      * @return boolean 値が10進数の数値表現のみの場合 true
  1211.      */
  1212.     function numelicCheck($string{
  1213.         /*
  1214.          * XXX 10進数の数値表現か否かを調べたいだけだが,
  1215.          * ctype_digit() は文字列以外 false を返す.
  1216.          * string ではなく int 型の数値が入る場合がある.
  1217.          */
  1218.         $string = (string) $string;
  1219.         return strlen($string&& !ctype_digit($string);
  1220.     }
  1221. }
  1222. ?>

Documentation generated on Fri, 24 Feb 2012 14:02:27 +0900 by Seasoft